﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Configuration;
using Crosland.Automotriz.Facade.Facade;
using Crosland.Automotriz.Facade.Interface;
using DevExpress.Web.ASPxGridView;
using Crosland.Automotriz.Logic.ControlExeption;
namespace Crosland.Automotriz.Web.Repuestos
{
    public partial class wFrmProcesarArticulosABC : System.Web.UI.Page
    {
        string idNegocio = ConfigurationManager.AppSettings["Negocio"];
        iFacadeProcesarABC BL_ProcesoABC = new FacadeProcesarABC();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", "JavaScript:confirmSubmitResult();", true);

                cargarGrilla();
            }
            cargarGrilla();
        }


        private void GuardarExceptionLog(String msgUsu, Exception ex, String metError)
        {
            try
            {
                String msgReal, fhError, pagError, codUsu;
                msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
                pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
                codUsu = Session["User"].ToString();
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");

                System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
                int number = 0;
                for (int i = 0; i < trace.FrameCount; i++)
                {
                    System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                    number = sf.GetFileLineNumber();
                }
                fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
                new Logg().ErrorLog(Server.MapPath("~/Logs/ErrorLog.csv"), msgUsu, msgReal, pagError, metError, codUsu, number);
            }
            catch (DataException e)
            {

                MensajesError(e.Message, e, "GuardarExceptionLog");
            }
            catch (RunException re)
            {
                MensajesError(re.Message, re, "GuardarExceptionLog");
            }

        }

        private void MensajesError(String msgUsu, Exception ex, String metError)
        {
            Crosland.Automotriz.Web.UserControl.MensajeError uc = (Crosland.Automotriz.Web.UserControl.MensajeError)Master.FindControl("ucErrorMensaje");
            String msgReal, fhError, pagError, codUsu;
            msgReal = (ex.InnerException != null) ? ex.InnerException.Message : ex.Message;
            pagError = new System.IO.FileInfo(Page.Request.Url.AbsolutePath).Name;
            codUsu = Session["User"].ToString();
            fhError = DateTime.Now.ToString("dd/MM/yyyy HH:mm:ss");
            System.Diagnostics.StackTrace trace = new System.Diagnostics.StackTrace(ex, true);
            int number = 0;
            for (int i = 0; i < trace.FrameCount; i++)
            {
                System.Diagnostics.StackFrame sf = trace.GetFrame(i);
                number = sf.GetFileLineNumber();
            }
            uc.Errores(msgUsu, msgReal, fhError, pagError, metError, codUsu, number);
        }
        public void cargarGrilla()
        {
            try
            {
                gvListado.DataSource = BL_ProcesoABC.listar_th_procesoabc_cab();
                gvListado.DataBind();
            }
            catch (DataException ex)
            {
                GuardarExceptionLog(ex.Message, ex, "cargarGrilla");
                MensajesError(ex.Message, ex, "cargarGrilla");
            }
            catch (RunException e)
            {
                GuardarExceptionLog(e.Message, e, "cargarGrilla");
                MensajesError(e.Message, e, "cargarGrilla");
            }


        }


        private void VerReporte()
        {
            try
            {
                if (gvListado.FocusedRowIndex == -1)
                {

                    throw new DataException("Seleccione un registro por favor !");

                }
                String anio = Convert.ToString(gvListado.GetRowValues(gvListado.FocusedRowIndex, "ANIO"));
                String des_mes = Convert.ToString(gvListado.GetRowValues(gvListado.FocusedRowIndex, "MES"));
                int num_mes = Convert.ToInt32(gvListado.GetRowValues(gvListado.FocusedRowIndex, "NUM_MES"));
                Session["NUM_PROC"] = Convert.ToInt32(gvListado.GetRowValues(gvListado.FocusedRowIndex, "ID_INVENTARIO_ABC_CAB"));
                Session["NUM_ANIO"] = anio;
                Session["NUM_MES"] = num_mes;
                Session["NUM_ANIO_MES"] = String.Format("{0}-{1}", anio, des_mes);
                Response.Redirect("~/Repuestos/wFrmProcesarArticulosABCReporte.aspx?id=" + idNegocio,false);

            }
            catch (DataException ex)
            {
                GuardarExceptionLog(ex.Message, ex, "VerReporte");
                MensajesError(ex.Message, ex, "VerReporte");
            }
            catch (Exception ex)
            {
                GuardarExceptionLog(ex.Message, ex, "VerReporte");
                MensajesError(ex.Message, ex, "VerReporte");
            }

        }
        protected void btnreporte_Click(object sender, EventArgs e)
        {
            this.VerReporte();
        }


        protected void btnNuevo_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Repuestos/wFrmProcesarArticulosABCGenerar.aspx?id=" + idNegocio);
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            String anio = Convert.ToString(gvListado.GetRowValues(gvListado.FocusedRowIndex, "ANIO"));
            String des_mes = Convert.ToString(gvListado.GetRowValues(gvListado.FocusedRowIndex, "MES"));
            Session["NUM_ANIO_MES"] = String.Format("{0}-{1}", anio, des_mes);
            Session["nro_proceso"] = Convert.ToInt32(gvListado.GetRowValues(gvListado.FocusedRowIndex, "ID_INVENTARIO_ABC_CAB"));
            Response.Redirect("~/Repuestos/wFrmProcesarArticulosABCListarDetalle.aspx?id=" + idNegocio);

        }

        protected void gvListado_AfterPerformCallback(object sender, DevExpress.Web.ASPxGridView.ASPxGridViewAfterPerformCallbackEventArgs e)
        {
            cargarGrilla();
        }

        protected void btnsalir2_Click(object sender, EventArgs e)
        {
            Response.Redirect("~/Seguridad/wFrmDefault.aspx?id=" + idNegocio);
        }

        protected void gvListado_PageIndexChanged(object sender, EventArgs e)
        {
            this.cargarGrilla();
        }
        protected void btnPopAceptar_Click(object sender, EventArgs e)
        {
            this.updateProcesoAnterior();
        }

        void updateProcesoAnterior()
        {

            try
            {

                int nro_proceso = Convert.ToInt32(gvListado.GetRowValues(gvListado.FocusedRowIndex, "ID_INVENTARIO_ABC_CAB"));
                if (BL_ProcesoABC.AnularProcesoABC(nro_proceso))
                {
                    this.cargarGrilla();
                    string script = "ShowPopupConfirmado();";
                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);
                }
            }
            catch (DataException ex)
            {
                GuardarExceptionLog(ex.Message, ex, "updateProcesoAnterior");
                MensajesError(ex.Message, ex, "updateProcesoAnterior");
            }
            catch (RunException e)
            {
                GuardarExceptionLog(e.Message, e, "updateProcesoAnterior");
                MensajesError(e.Message, e, "updateProcesoAnterior");
            }
        }

        protected void btnAnular_Click(object sender, EventArgs e)
        {
            if (gvListado.VisibleRowCount == -1)
            {
                string script = "ShowSeleccionar();";
                ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

            }
            else
            {
                int idCab = Convert.ToInt32(gvListado.GetRowValues(gvListado.FocusedRowIndex, "ID_INVENTARIO_ABC_CAB"));


                if (idCab > 0)
                {
                    string script = "ShowCreateAccountWindow();";

                    ScriptManager.RegisterStartupScript(this, typeof(Page), "carga", script, true);

                }
            }
        }

        protected void gvListadoDetalle_BeforePerformDataSelect(object sender, EventArgs e)
        {
            Session["ID_PROCESO_ABC_CAB"] = (sender as ASPxGridView).GetMasterRowKeyValue();
        }
    }
}